Skip to content

feat(ssm): AWS SSM Parameter Store (driver + provider + SDK-compat handler)#263

Merged
NitinKumar004 merged 2 commits into
developmentfrom
feat/ssm-parameterstore
Jul 12, 2026
Merged

feat(ssm): AWS SSM Parameter Store (driver + provider + SDK-compat handler)#263
NitinKumar004 merged 2 commits into
developmentfrom
feat/ssm-parameterstore

Conversation

@NitinKumar004

Copy link
Copy Markdown
Collaborator

Closes #239. New parameterstore driver + providers/aws/ssm + server/aws/ssm (AWS JSON 1.1, AmazonSSM.*). PutParameter (Overwrite/versioning), GetParameter(s), GetParametersByPath (recursive), Delete, DescribeParameters, GetParameterHistory, LabelParameterVersion. Real-SDK roundtrip tests; full go test ./server/... green. Gaps documented (SecureString/KMS no-op, pagination, policies).

@NitinKumar004

Copy link
Copy Markdown
Collaborator Author

Code review — findings

Multi-angle review. Layering matches Secrets; locking correct; prefix-boundary matching correct; real-SDK tests assert value/version round-trip, path hierarchy, typed errors.

Fixed (38f64c5): LabelParameterVersion rejects labels starting with a digit or aws/ssm (→ InvalidLabels) instead of attaching them — also stops a numeric label ("5") from being attached then made unreachable by version-number resolution; PutParameter retry threads the caller's context.

Deferred (documented): DeleteParameter doesn't strip a :selector; a name containing : is unreadable (AWS forbids :); missing version maps to ParameterNotFound not ParameterVersionNotFound.

Emulate AWS Systems Manager Parameter Store so the real
aws-sdk-go-v2/service/ssm client works against cloudemu.

- parameterstore/driver: portable ParameterStore driver interface
- parameterstore: portable wrapper (recorder/metrics/ratelimit/inject/latency)
- providers/aws/ssm: in-memory memstore-backed provider (versioning, labels,
  hierarchical paths, history)
- server/aws/ssm: AWS JSON 1.1 handler dispatched on X-Amz-Target AmazonSSM.*
- wired SSM onto providers/aws.Provider and server/aws Drivers/Register

Operations: PutParameter (Overwrite + versioning), GetParameter,
GetParameters, GetParametersByPath (Recursive), DeleteParameter,
DeleteParameters, DescribeParameters, GetParameterHistory,
LabelParameterVersion. Version/label selectors via ':' suffix.

SecureString is stored as-is (no KMS); WithDecryption is a no-op.

Tests: sdk_roundtrip_test.go drives the real SDK client against httptest,
asserting typed responses and a typed ParameterNotFound.
Address review of #239:
- LabelParameterVersion now rejects labels that start with a digit or with
  aws/ssm (case-insensitive), returning them in InvalidLabels instead of
  attaching them — which also stops a numeric label (e.g. "5") from being
  attached and then made unreachable by version-number selector resolution.
- PutParameter's Overwrite-race retry now uses the caller's context instead of
  context.Background().
@NitinKumar004 NitinKumar004 force-pushed the feat/ssm-parameterstore branch from 38f64c5 to bdd3466 Compare July 12, 2026 05:18
@NitinKumar004 NitinKumar004 merged commit 848a505 into development Jul 12, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: AWS SSM Parameter Store SDK-compat handler

1 participant